import { makeAutoObservable, autorun, reaction } from "mobx";
/**
 * observable 监听状态,将状态交给mobx管理
 * action 状态改变时的事件源
 * computed 计算属性
 * autorun 监听属性 初始化会执行一次
 * reactions 精确监听属性 初始化不会执行
 */
class MobxStore {
  constructor() {
    /**
     * 将类实例交给mobx管理
     */
    makeAutoObservable(this, {}, { autoBind: true });
  }

  count = 1;

  increment() {
    setTimeout(() => {
      this.count++;
    }, 1000);
  }

  decrement() {
    this.count--;
  }

  get double() {
    return this.count * 2;
  }
}
/**
 * store创建时就会触发一次
 */
autorun(() => {
  console.log("state改变了");
});

/**
 * 可以指定监听某一个值的变化来触发
 */
const counter = new MobxStore();
reaction(
  () => counter.count,
  (val, oldVal) => {
    console.log(val, oldVal);
  }
);

// 到处store实例
export default counter;
